package intfns
import (
"fmt"
"github.com/ChrisTrenkamp/goxpath/tree"
"golang.org/x/text/language"
)
func boolean(c tree .Ctx , args ...tree .Result ) (tree .Result , error ) {
if b , ok := args [0 ].(tree .IsBool ); ok {
return b .Bool (), nil
}
return nil , fmt .Errorf ("Cannot convert object to a boolean" )
}
func not(c tree .Ctx , args ...tree .Result ) (tree .Result , error ) {
b , ok := args [0 ].(tree .IsBool )
if !ok {
return nil , fmt .Errorf ("Cannot convert object to a boolean" )
}
return !b .Bool (), nil
}
func _true(c tree .Ctx , args ...tree .Result ) (tree .Result , error ) {
return tree .Bool (true ), nil
}
func _false(c tree .Ctx , args ...tree .Result ) (tree .Result , error ) {
return tree .Bool (false ), nil
}
func lang(c tree .Ctx , args ...tree .Result ) (tree .Result , error ) {
lStr := args [0 ].String ()
var n tree .Elem
for _ , i := range c .NodeSet {
if i .GetNodeType () == tree .NtElem {
n = i .(tree .Elem )
} else {
n = i .GetParent ()
}
for n .GetNodeType () != tree .NtRoot {
if attr , ok := tree .GetAttribute (n , "lang" , tree .XMLSpace ); ok {
return checkLang (lStr , attr .Value ), nil
}
n = n .GetParent ()
}
}
return tree .Bool (false ), nil
}
func checkLang(srcStr , targStr string ) tree .Bool {
srcLang := language .Make (srcStr )
srcRegion , srcRegionConf := srcLang .Region ()
targLang := language .Make (targStr )
targRegion , targRegionConf := targLang .Region ()
if srcRegionConf == language .Exact && targRegionConf != language .Exact {
return tree .Bool (false )
}
if srcRegion != targRegion && srcRegionConf == language .Exact && targRegionConf == language .Exact {
return tree .Bool (false )
}
_ , _ , conf := language .NewMatcher ([]language .Tag {srcLang }).Match (targLang )
return tree .Bool (conf >= language .High )
}
The pages are generated with Golds v0.6.7 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds .